Boite à outils 2 :


Cette seconde étape du projet consiste à étiqueter les données désormais récupérées et nettoyées. Ces données sont imprimées dans un format texte brut et un XML. Nous utilisons alors un programme d’étiquetage pour chacun de  ces formats : Treetagger pour le XML et Cordial pour le texte brut.

Pour que le fichier de sortie .xml corresponde à un fichier xml, il nous faut imprimer l’entête et les balises qui ouvrent le fichier :

print OUT1 "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n";
print OUT1 "<PARCOURS>\n";
print OUT1 "<NOM>BLANCHARD DUFOUR</NOM>\n";
print OUT1 "<FILTRAGE>\n";

Et quand le traitement est fini, il ne faut surtout pas oublier de les refermer sinon l’arborescence sera incomplète et le fichier non valide :

print OUT1 "</FILTRAGE>\n";
print OUT1 "</PARCOURS>\n";

Afin de rendre l’étiquetage faisable, nous avons trié les données par rubriques. Il y en a 17 dans les fils RSS de 2014. Il a suffi pour cela, de créer une nouvelle variable $rub, que nous spécifions en ligne de commande et que nous intégrons au test avant d’ouvrir le fichier. Si le nom du fichier contient le numéro de la rubrique, alors le traitement peut se faire.

if (($file =~ /.+-$rub.+\.xml$/) and (-s $file !=0))

Liste des rubriques :
3208 = A la Une, 3210 = International, 3214 = Europe, 3224 = Société, 3232 = Idées, 3234= Economie,  3236 = Médias,
3238= Vous, 3242 = Sport, 3244 = Planète, 3246 = Culture, 3260 = Livres, 3404= à la une, 3476 = Cinéma, 3546 = Voyage, 651865 = Technologies, 0,57-0,64-823353 = Politique.

Cordial a pour avantage d’être beaucoup plus rapide que Treetagger mais il a aussi des inconvénients. Il ne prend pas les fichiers de plus de 2 Mo et ne prends pas en charge l’utf-8. De plus, nous devons étiqueter en dehors du programme, sur un autre ordinateur. Cependant, il segmente lui-même le fichier.
Pour ce qui est de Treetagger, il lui faut un fichier avec un mot par ligne. Pour cela, nous avons préalablement tokénisé nos contenus. Mais tout l’étiquetage à l’aide de Treetagger peut se faire en ligne de commande et donc être intégré à notre script avec la fonction system. En tout, nous lançons 3 programmes différents pour treetagger : le tokeniser, le parser et le programme treetagger2xml.pl pour remettre au format xml.

Pour spécifier l’encodage du fichier de sortie .xml ou .txt :

my $encodagesortie2="iso-8859-1"; # ou utf-8
if (!open (OUT2,">:encoding($encodagesortie2)", $output2))

La procedure étiquetage par Treetagger:

Le $titre et le $description sont envoyés à la procédure dans cet ordre. 2 variables locales homonymes sont créées et prennent leurs valeurs. Des variables $titreetiquete et $descriptionetiquete sont initialisées à la chaîne vide mais seront retournées au programme pleines une fois que les données seront étiquetées. On crée un fichier « texteetiquete.txt » où on imprime le titre ou la description et qu'on met en argument pour le 1er programme de tokenisation à lancer. On ouvre ensuite le dernier fichier produit à la suite des 3 programmes, on lit la première ligne d’entête xml pour ne pas l’imprimer dans le fichier global et on imprime le reste dans la variable de retour.


Nous avons un script pour chaque étiquetage et un pour les deux sorties :

SCRIPTS :

script 2 en 1
2 en 1 avec regex
script pour cordialiser
script pour treetagger

RESULTATS :

sortie pour Cordial
sortie treetagger
sortie étiquetée par Cordial

Précision au sujet du fichier de sortie étiqueté par tree-tagger : si le navigateur affiche des retours à la ligne après chaque élément <data>, en réalité, le fichier de sortie présente tous les éléments au sein de la balise <element> sur une ligne, structure nécessaire pour être reconnue par les expressions régulières contenues dans l'une des méthodes d'extraction de patrons morphosyntaxiques que nous allons vous présenter dans la baO3.